/*
*  vote板块要派发的行为对象管理
*     + voteAction 包含很多方法，每一个方法执行，都返回派发的行为对象
*
*  */
import * as TYPES from "../action-types"

// 延迟函数：返回 promise 实例，在指定的时间后，才会让实例成功
const delay = (interval = 1000) => {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve()
        }, interval)
    })
}

const voteAction = {
    // redux-promise 中间件
    async support() {
        await delay()
        return {
            type: TYPES.VOTE_SUP
        }
    },
    // redux-thunk 中间件
    oppose() {
        return async (dispatch) => {
            await delay()
            dispatch({
                type: TYPES.VOTE_OPP
            })
        }
    }
}
export default voteAction